#include<iostream>
using namespace std;
#include<string>
#include<vector>
#include<set>
#include<algorithm>
#include<cstdlib>

//链接：https ://leetcode.cn/problems/permutation-ii-lcci/solution/by-wo-yao-chu-qu-luan-shuo-aalx/

class Solution
{
public:
    void dfs(vector<string>& res, string& S, int i)
    {
        if (i == S.length())
        {
            res.push_back(S);    // 在末端插值
            return;
        }

        set<char> hash;                         //注意哈希表要在循环前创建

        for (int j = i; j < S.length(); ++j)
        {
            //第一轮的时候，[0]和[0]交换，[1]和[1]交换, [2]和[2]交换，取得的第一个就是一个不变的值
            //然后调出到-2层递归，j+1即1+1=2，则实现[1][2]的交换
            //只有第0层递归才能去得到S[-1]的值
            if (hash.find(S[j]) == hash.end())  //对集合内不存在的字母才进行递归
            {
                hash.insert(S[j]);              //当前元素插入集合中

                swap(S[i], S[j]); 
                dfs(res, S, i + 1);
                swap(S[i], S[j]); //内部递归结束后，就把元素交换回原位
            }
        }
    }

    vector<string> permutation(string S)
    {
        vector<string> res;

        dfs(res, S, 0);

        return res;
    }
};

void printVector(vector<string>& v) 
{
    for (vector<string>::iterator it = v.begin(); it != v.end(); it++) 
    {
        cout << *it << " ";
    }
    cout << endl;
}


int main() 
{

    //string s_in = "qqe";
    string s_in;
    cin >> s_in;
    //cout << s_in.size() << endl; //查看长度
    Solution a;
    vector<string>res;
    res = a.permutation(s_in);
    cout<< res.size() << endl;
    printVector(res);

    //----------------------------------------------------
    int test001 = 12;
    string test002 = "123";
    //cout << typeid(test002).name() << endl;
    cout << atoi(test002.c_str()) << endl;  //字符串转化整型数字
    cout << typeid(atoi(test002.c_str())).name() << endl;  //查看转化后的类型
    cout << to_string(test001) << endl;    //整型转化为字符串
    cout << typeid(to_string(test001)).name() << endl;

    system("pause");
    return 0;

}





